#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int a = 85230745;

// 线程函数
void *thread_func1(void *arg)
{
    printf("子线程1开始执行...,a的值是:%d\n", a);

    // 子线程执行一段时间
    sleep(5);

    printf("子线程1结束执行\n");
    return NULL;
}

void *thread_func2(void *arg)
{
    printf("子线程2开始执行...,a的值是:%d\n", a);

    // 子线程执行一段时间
    sleep(5);

    printf("子线程2结束执行\n");
    return NULL;
}

int main()
{

    pthread_t thread_id1;
    pthread_t thread_id2;

    // 创建一个子线程
    if (pthread_create(&thread_id1, NULL, thread_func1, NULL) != 0)
    {
        perror("线程创建失败");
        return 1;
    }
    if (pthread_create(&thread_id2, NULL, thread_func2, NULL) != 0)
    {
        perror("线程创建失败");
        return 1;
    }
    printf("主线程也在执行\n");
    sleep(2);
    int var = 85230745;
    pthread_join(thread_id1, 0);
    pthread_join(thread_id2, 0);
    pid_t pid = fork(); // 创建子进程
    if (pid < 0)
    {
        perror("fork");
        exit(1);
    }
    else if (pid == 0)
    { // 子进程

        // 修改变量
        var = 200;
        printf("Child process: var = %d\n", var);
    }
    else
    {
        printf("Parent process: var = %d\n", var);
    }

    // 主线程结束
    printf("主线程结束\n");

    exit(0);
}
